package org.zero.mapper;

import java.time.LocalDate;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.zero.domain.UserDO;

/**
 * @author Zero
 */
public interface UserMapper {
    /**
     * 获取总用户数
     *
     * @return
     */
    int count();

    /**
     * 通过id获取用户
     *
     * @return
     */
    UserDO getById(int id);

    /**
     * 查询所有用户
     *
     * @return
     */
    List<UserDO> listAll();

    /**
     * 查询id小于指定数的用户
     *
     * @param id
     * @return
     */
    List<UserDO> listBefore(int id);

    /**
     * 查询生日在指定区间的用户
     *
     * @param start
     * @param end
     * @return
     */
    List<UserDO> listBetween(@Param("start") LocalDate start,
                             @Param("end") LocalDate end);

    /**
     * 通过用户名进行模糊查询
     *
     * @param name
     * @return
     */
    List<UserDO> listByName(String name);

    /**
     * 添加用户
     *
     * @param user
     * @return
     */
    int save(UserDO user);

    /**
     * 添加用户
     *
     * @param user
     * @return
     */
    int save1(UserDO user);

    /**
     * 更新用户
     *
     * @param user
     * @return
     */
    boolean update(UserDO user);

    /**
     * 删除用户
     *
     * @param id
     * @return
     */
    boolean remove(int id);
}
